package com.ruoyi.common.utils;

import com.ruoyi.common.utils.bean.StreamBean;
import com.sun.glass.events.KeyEvent;
import lombok.SneakyThrows;
import org.apache.shiro.crypto.hash.Md5Hash;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author chmj
 * @version V1.0
 * @Package com.wincc.util
 * @Copyright 2021/8/10 15:01 汇博医疗股份有限公司
 */
public class TestDemo {

    @SneakyThrows
    public static void main(String[] args) {
//        List<String> ports = new ArrayList<>();
//        Enumeration enumeration= CommPortIdentifier.getPortIdentifiers();
//        while(enumeration.hasMoreElements()) {
//            CommPortIdentifier portId = (CommPortIdentifier) enumeration.nextElement();
//            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
//                System.out.println("port name :" + portId.getName());
//                ports.add(portId.getName());
//            }
//        }
//        String a = "79.0 N";
//        System.out.println(Double.parseDouble(a.substring(0,a.length() - 2)));
//        Runtime run = Runtime.getRuntime();
//        Process process = run.exec("C:/ScaleJointPos/ScaleJointPos.exe");
//        new Thread(){
//            @SneakyThrows
//            @Override
//            public void run(){
//                Thread.sleep(15000);
//                File file = new File("C:/ScaleJointPoint/Test.txt");
//                if (file.exists()) {
//                    System.out.println(ConvertUtils.txt2String(file));
//                }else {
//                    System.out.println("文件不存在，关闭程序");
//                    run.exec("tskill ScaleJointPos");
//                }
//            }
//        }.start();
//        File file = new File("C:/ScaleJointPoint/Test.txt");
//        List<Point> pointList = JSONArray.parseArray(ConvertUtils.txt2String(file),Point.class);
//        for (Point point:pointList) {
//            System.out.println(point.getPointName() + "====" + point.getX() + "====" + point.getY());
//        }
//        Coordinate coordinate = new Coordinate();
//        for (Point point:pointList) {
//            Axis axis = new Axis();
//            axis.setX(point.getX());
//            axis.setY(point.getY());
//            if(point.getPointName().equals("LeftShoulderUp")){
//                coordinate.setLeftShoulderUp(axis);
//            }
//            switch (point.getPointName()){
//                case "LeftShoulderUp":
//                    coordinate.setLeftShoulderUp(axis);
//                    break;
//                case "LeftShoulderDown":
//                    coordinate.setLeftShoulderDown(axis);
//                    break;
//                case "RightShoulderUp":
//                    coordinate.setRightShoulderUp(axis);
//                    break;
//                case "RightShoulderDown":
//                    coordinate.setRightShoulderDown(axis);
//                    break;
//                case "LeftHipLeft":
//                    coordinate.setLeftHipLeft(axis);
//                    break;
//                case "RightHipRight":
//                    coordinate.setRightHipRight(axis);
//                    break;
//                case "MiddleDang":
//                    coordinate.setMiddleDang(axis);
//                    break;
//                case "NeckLeft":
//                    coordinate.setNeckLeft(axis);
//                    break;
//                case "NeckRight":
//                    coordinate.setNeckRight(axis);
//                    break;
//                case "RightKnee":
//                    coordinate.setRightKnee(axis);
//                    break;
//                case "LeftKnee":
//                    coordinate.setLeftKnee(axis);
//                    break;
//                case "LeftAnkle":
//                    coordinate.setLeftKnee(axis);
//                    break;
//                case "RightAnkle":
//                    coordinate.setRightAnkle(axis);
//                    break;
//                case "LeftHip":
//                    coordinate.setLeftHip(axis);
//                    break;
//                case "RightHip":
//                    coordinate.setRightHip(axis);
//                    break;
//            }
//        }
//        System.out.println(JSONObject.toJSON(coordinate));
//        System.out.println(HexUtil.string2HexString("XDK"));
//        MusicPlayerUtil.play_mp3("C:/music/欢迎使用.mp3");
//        String a = "58 44 4b 12 03";
//        System.out.println(a.substring(12,14));
//        int command = 1;
//        int model = 6;
//        int time = 0;
//        int startX = -10;
//        int startY = 0;
//        int speedX = 5;
//        int speedY = 0;
//        int turn = 0;
//        String instruct = "58444B1D" + HexUtil.intToHexString(command,1) + HexUtil.intToHexString(model,1) + HexUtil.intToHexString(time * 60,2) + (startX < 0 ? "01" + HexUtil.intToHexString(0 - startX,1) : "02" + HexUtil.intToHexString(startX,1)) + HexUtil.intToHexString(speedX,1) + (startY < 0 ? "01" + HexUtil.intToHexString(0 - startY,1) : "02" + HexUtil.intToHexString(startY,1)) + HexUtil.intToHexString(speedY,1) + HexUtil.intToHexString(turn,2) + "000000000000000000";
//        instruct += CRC16Util.getCrc(CRC16Util.calcCrc16(ByteUtil.hexStringToBytes(instruct))) + "EEEE";
//        System.out.println(instruct.toUpperCase());
//        System.out.println(instruct.length());
//        System.out.println(instruct.substring(48,50));
//        System.out.println(HexUtil.HexStringToString(instruct));
//        System.out.println(HexUtil.intToHexString(-30,1));
//        System.out.println(HexUtil.intToHexString(30,1));
//        System.out.println(instruct.length());
//        String instruct = "58 44 4B 29 01 01 00 78 05 0A 09 0A 0B B8 00 00 00 00 00 00 03 C6 9E EE EE ";
//        System.out.println(instruct.length());
//        System.out.println(instruct.substring(60,62));

//        try {
//            HttpClient client = new DefaultHttpClient();                //构建一个Client
//             HttpPost post = new HttpPost("https://www.cwhcare.com/soho-admin/login/doLogin.do");    //构建一个POST请求
////             构建表单参数
//             List<NameValuePair> formParams = new ArrayList<NameValuePair>();
//             formParams.add(new BasicNameValuePair("loginName", "sohoadmin"));
//             formParams.add(new BasicNameValuePair("pwd", "SOHOADMIN123"));
//             UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8");//将表单参数转化为“实体”
//             post.setEntity(entity);        //将“实体“设置到POST请求里
//
//            HttpResponse response = client.execute(post);//提交POST请求
//            HttpEntity result = response.getEntity();//拿到返回的HttpResponse的"实体"
//            String content = EntityUtils.toString(result);;            //用httpcore.jar提供的工具类将"实体"转化为字符串打印到控制台
//            System.out.println(content);
//            if(content.contains("登陆成功")){
//                System.out.println("登陆成功！！！");
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        String instructLamp = "A5018001AA";
//        System.out.println(instructLamp.substring(6,8));

//        String a = "01F0";
//        int str16 = HexUtil.HexStringToInt(a);
//        System.out.println(str16);

//        String a = "{\"dataId\":\"AAXaaHqXmS5gJegNYjkA9BA\",\"devId\":\"6c562cb3cb007d444bmhap\",\"productKey\":\"vt3g1l1bywz1apgo\",\"status\":[{\"124\":\"12\",\"code\":\"breath_Rate\",\"t\":1647517151762,\"value\":12}]}";
//        MessageData mData = JSON.parseObject(a, MessageData.class);
//        System.out.println("the real message data:" + JSON.toJSONString(mData.getStatus()));
//        String data = "@00RD0060000151*";
//        String a = "\\";
//        System.out.println(data.startsWith("@"));

//        String str = "02031000010001000400030003000200010001B89C";
//        str = str.replace(" ", "");
//        String one = str.substring(6,10);
//        String two = str.substring(10,14);
//        String three = str.substring(14,18);
//        String four = str.substring(18,22);
//        String five = str.substring(22,26);
//        String six = str.substring(26,30);
//        String seven = str.substring(30,34);
//        String eight = str.substring(34,38);
//        System.out.println(one);
//        System.out.println(two);
//        System.out.println(three);
//        System.out.println(four);
//        System.out.println(five);
//        System.out.println(six);
//        System.out.println(seven);
//        System.out.println(eight);

//        String instruct = "011003E800050A00020002";
//        String is3str = "0003";
//        String is4str = "0003";
//        String is5str = "0003";
//
//        String str = CRC16Util.crcDeal(instruct+is3str+is4str+is5str);
//        System.out.println(str);

//        String str = CRC16Util.crcDeal("0203044C0008");
//        System.out.println(CRC16Util.crcDeal("011003E800050A00010001000300030003"));
//        System.out.println(Integer.parseInt("10",2));
//        String pass = new Md5Hash("123" + "123" + "d5f9e1").toHex();
//        System.out.println(pass);
//        String a = "0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,";
//        String[] b = a.split(",");
//        for (String i:b
//             ) {
//            System.out.println(i);
//        }
//        int data[] = {8, 5, 4, 2, 4};
//        int data1[] = {8, 5, 4, 2, 4};
//        String arr = "";
//        for (int j = 0; j < data.length; j++) {
//            //外层循环，遍历次数
//            for (int k = 0; k < data.length - j - 1; k++) {
//                //内层循环，升序（如果前一个值比后一个值大，则交换）
//                //内层循环一次，获取一个最大值
//                if (data[k] < data[k + 1]) {
//                    int temp = data[k + 1];
//                    data[k + 1] = data[k];
//                    data[k] = temp;
//                }
//            }
//        }
//        for (int j = 0; j < data.length; j++) {
//            for (int k = 0; k < data1.length; k++) {
//                if(data1[k] == data[j]){
//                    arr += k + 1;
//                    break;
//                }
//            }
//        }
//        System.out.println("排序后结果为:");
//        for (int i : arr) {
//            System.out.println(i);
//        }
//        System.out.println("排序后下标为:");
//        int[] arr={8,9,4,6,5};//目标数组
//        int[] arra=new int[arr.length];
//        System.arraycopy(arr,0,arra,0,arr.length);
//        Arrays.sort(arr); for(int x:arr){
//            System.out.println(x);//输出排序后数组
//        } //查找元素6
//        for(int y=0;y<arra.length;y++){
//            if(arra[y]==6){
//                System.out.println(y);
//            }
//        }

//        List<StreamBean> list = new ArrayList<>();
//        StreamBean stream1 = new StreamBean();
//        stream1.setKey("1");
//        stream1.setValue("Dommy");
//        list.add(stream1);
//        StreamBean stream2 = new StreamBean();
//        stream2.setKey("2");
//        stream2.setValue("Jerry");
//        list.add(stream2);
//        StreamBean stream3 = new StreamBean();
//        stream3.setKey("3");
//        stream3.setValue("Catty");
//        list.add(stream3);
//        List<String> list1 = new ArrayList<>();
//        list.stream().sorted(Comparator.comparing(StreamBean::getValue).reversed())
//                .forEach(x -> {
//                    list1.add(x.getKey());
//                });
//        for (int i = 0; i < list1.size(); i++) {
//            System.out.println(list1.get(i));
//        }
//        System.out.println("请按键");
//        Scanner sc = new Scanner(System.in);
//        int nextInt = sc.nextInt();
//        System.out.println("你输入的是" + nextInt);
//        double nextDouble = sc.nextDouble();
//        System.out.println("你输入的是" + nextDouble);
//        String nextString = sc.nextLine();
//        System.out.println("你输入的是" + nextString);
        Path path = Paths.get("F:\\Desktop\\鞋垫\\42\\test.gcode");
        Files.delete(path);
        String fileName = "F:\\Desktop\\鞋垫\\42\\42-L-1.gcode";

        byte[] bytes = Files.readAllBytes(Paths.get(fileName));

        String content = new String(bytes, StandardCharsets.UTF_8);
        System.out.println(content);

        FileWriter fileWriter = new FileWriter("F:\\Desktop\\鞋垫\\42\\test.gcode",true);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter,1024);
        bufferedWriter.write(content);
        bufferedWriter.write(" I\n" +
                "G0 F3000 X0 Y0");
        bufferedWriter.flush();
        bufferedWriter.close();
    }
}
